package checkers3d.presentation;

import java.awt.*;

/**
 * A interface that represents a generic object that may be displayed in screen
 * space.
 *
 * @author      Ruben Acuna
 */
public interface IRenderResource
{
    /**
    * Returns true if the given point is drawn by the RenderResource, false
    * otherwise.
    *
    * @param  point A point relative to this object draw data.
    * @return       Boolean indicating if the point is drawn by the object.
    */
    boolean containsPoint(Point point);

    /**
     * Returns the height of this render resource in pixels.
     *
     * @return Height in pixels.
     */
    int getHeight();

    /**
     * Returns the width of this render resource in pixels.
     *
     * @return Width in pixels.
     */
    int getWidth();

    /**
     * Resets the appearance of this render resource.
     */
    void reset();
    
    /**
     * Informs this render resource that a given amount of time in milliseconds
     * has elapsed. Used for animation and time events.
     *
     * @param ms Milliseconds elapsed.
     */
    void tick(int ms);

    /**
     * Returns a new instance of this object type with all local variables the
     * same.
     *
     * @return A new instance of this object.
     */
    IRenderResource clone();
}